class Solution:
    def gardenNoAdj(self, N: int, paths):
        # print("paths:",paths)#演示使用
        color=[1]*N    #要返回的数组，即第i+1个花园种什么颜色的花
        # print("color:",color)#演示使用
        graph=[[] for i in range(N)]    #！！！重点： graph[i]代表的是第i+1个花园（点）在种花的时候需要考虑到的其他花园（点）
        # print("graph0:",graph)#演示使用
        for path in paths:
            if path[0]>path[1]:
                #为什么要-1？因为实际与下标差一
                #举个例子：（3，1）代表从第3个花园到第1个花园有路径，在graph中的第2个位置就要填上数0
                graph[path[0]-1].append(path[1]-1) 
                # print("graphif:",graph)#演示使用
            else:
                graph[path[1]-1].append(path[0]-1)
                # print("graphelse:",graph)#演示使用
        # print("graph:",graph)#演示使用
        # print(" ")#演示使用
        

        for i in range(1,N):
            # print("i=",i)#演示使用
            flower=[1,2,3,4]
            for node in graph[i]:
                # print("node=",node)#演示使用
                # print("color[node]=",color[node])#演示使用
                if color[node] in flower:
                    flower.remove(color[node])
                    # print("flower:",flower)#演示使用
            color[i]=flower[0]
            # print("color[{0}]={1}".format(i,flower[0]))#演示使用
            # print(" ")#演示使用
        return color


N=3
paths=[[1,2],[2,3],[3,1]]
s=Solution()
print(s.gardenNoAdj(N,paths))